﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AA行情接口类库;
using BB股票登录类库;
using CC股票手工类库;
using DD融资买入类库;
using EE普通买入类库;
using FF融资T加零类库;
using GG普通T加零类库;
using HH破位卖出类库;
using II限价交易类库;
using JJ长线持股类库;
using KK期货登录类库;
using LL期货手工类库;
using MM期货自动类库;
using NN行情接口一类库;
using SS历史数据浏览类库;
using RR持仓账户类库;
using TT股票池类库;
using WW预警列表类库;
using XX指标编辑类库;
using 通用类库.DataProvider;
using 通用类库.Utils;
using 通用类库.Stock;
using 股票智能交易.通用工具类;

namespace 股票API智能交易                                                              //
{
    public partial class 主界面 : Form                                                 //
    {
        public 主界面()
        {
            InitializeComponent();
            
            登录界面 主界面 = new 登录界面();
            if (主界面.ShowDialog() == DialogResult.OK)
            {
                button3_Click(null, null);                                        //模拟人工点击button3，主界面打开的同时加载上【股票手工】交易窗口
            }
            else Application.Exit();
        }

        //将用户控件---股票手工.cs---插入到主窗体panMain中

        private void 登录_Click(object sender, EventArgs e)      //点击登录按键，主界面打开的同时加载上【股票手工】交易窗口
        {
            this.panMain.Controls.Clear();                                    //清除控件窗体内容，panMain是主界面中的容器，用来加载子窗体的

            if (页面全局缓存.Instance.股票手工页面 == null)           //Instance实例
        {
                页面全局缓存.Instance.股票手工页面 = new 股票手工();           //新建用户控件  
            }
            this.panMain.Controls.Add(页面全局缓存.Instance.股票手工页面);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.panMain.Controls.Clear();                                         //清除主窗体内容，
            行情接口 usA = new 行情接口();                                       //新建一个用户控件，         
            this.panMain.Controls.Add(usA);                                     //将新增的用户控件插入到主窗体 panMain的容器中  
        }

        private void button2_Click(object sender, EventArgs e)
        {
            this.panMain.Controls.Clear();                                           //清除主窗体内容，
            股票登录 usB = new 股票登录();                                         //新建一个用户控件，         
            this.panMain.Controls.Add(usB);                                      //将新增的用户控件插入到主窗体 panMain的容器中  
        }

        private void button3_Click(object sender, EventArgs e)
        {
            this.panMain.Controls.Clear();                                              //清除控件窗体内容

            if (页面全局缓存.Instance.股票手工页面 == null)
            {
                页面全局缓存.Instance.股票手工页面 = new 股票手工();    //新建股票手工用户控件  
            }
            this.panMain.Controls.Add(页面全局缓存.Instance.股票手工页面);
        }

        private void button4_Click(object sender, EventArgs e)
        {
            this.panMain.Controls.Clear();                                          //清除控件窗体内容
            融资买入 usD = new 融资买入();                                        //新建用户控件
            this.panMain.Controls.Add(usD);                                     //将新增的用户控件插入到主窗体 panMain的容器中     
        }

        private void button5_Click(object sender, EventArgs e)
        {
            this.panMain.Controls.Clear();                                        //清除控件窗体内容
            普通买入 usE = new 普通买入();                                       //新建用户控件
            this.panMain.Controls.Add(usE);                                    //将新增的用户控件插入到主窗体 panMain的容器中     
        }

        private void button6_Click(object sender, EventArgs e)
        {
            this.panMain.Controls.Clear();                                        //清除控件窗体内容
            融资T加零 usF = new 融资T加零();                                   //新建用户控件
            this.panMain.Controls.Add(usF);                                    //将新增的用户控件插入到主窗体 panMain的容器中     
        }
        private void button7_Click(object sender, EventArgs e)
        {
            this.panMain.Controls.Clear();                                        //清除控件窗体内容
            普通T加零 usG = new 普通T加零();                                   //新建用户控件
            this.panMain.Controls.Add(usG);                                    //将新增的用户控件插入到主窗体 panMain的容器中     
        }
        private void button8_Click(object sender, EventArgs e)
        {
            this.panMain.Controls.Clear();                                         //清除控件窗体内容
            破位卖出 usH = new 破位卖出();                                       //新建用户控件
            this.panMain.Controls.Add(usH);                                    //将新增的用户控件插入到主窗体 panMain的容器中     
        }
        private void button9_Click(object sender, EventArgs e)
        {
            this.panMain.Controls.Clear();                                          //清除控件窗体内容
            限价交易 usI = new 限价交易();                                          //新建用户控件
            this.panMain.Controls.Add(usI);                                        //将新增的用户控件插入到主窗体 panMain的容器中     
        }
        private void button10_Click(object sender, EventArgs e)
        {
            this.panMain.Controls.Clear();                                           //清除控件窗体内容
            长线持股 usJ = new 长线持股();                                           //新建用户控件
            this.panMain.Controls.Add(usJ);                                        //将新增的用户控件插入到主窗体 panMain的容器中     
        }
        private void button11_Click(object sender, EventArgs e)
        {
            this.panMain.Controls.Clear();                                          //清除控件窗体内容
            期货登录 usK = new 期货登录();                                        //新建用户控件
            this.panMain.Controls.Add(usK);                                      //将新增的用户控件插入到主窗体 panMain的容器中     
        }
        private void button12_Click(object sender, EventArgs e)
        {
            this.panMain.Controls.Clear();                                          //清除控件窗体内容
            期货手工 usL = new 期货手工();                                         //新建用户控件
            this.panMain.Controls.Add(usL);                                       //将新增的用户控件插入到主窗体 panMain的容器中     
        }
        private void button13_Click(object sender, EventArgs e)
        {
            this.panMain.Controls.Clear();                                           //清除控件窗体内容
            期货自动 usM = new 期货自动();                                        //新建用户控件
            this.panMain.Controls.Add(usM);                                     //将新增的用户控件插入到主窗体 panMain的容器中     
        }

        //点击button14，将名称为【股票池】的子窗体弹出来，挂在主界面的下边 ，再次点击button14时关闭[股票池]窗口
        private void 股票池_LocationChanged(object sender, EventArgs e)
        {
            if (formbbb != null && formbbb.Visible)
            {
                formbbb.Location = new Point(this.Location.X, this.Location.Y + this.Height);   //坐标定位
            }
        }
        Form formbbb = null;
        private void button14_Click_1(object sender, EventArgs e)
        {
            if (formbbb == null || formbbb.Visible == false)
            {
                formbbb = new 股票池();
                formbbb.Show();
                formbbb.Location = new Point(this.Location.X, this.Location.Y + this.Height);      //坐标定位
            }
            else { formbbb.Close(); formbbb = null; }
        }

        //点击button15，将名称为【历史数据浏览】的子窗体弹出来，挂在主界面的下边 ，再次点击button15时关闭[数据浏览]窗口
        private void 历史数据浏览_LocationChanged(object sender, EventArgs e)
        {
            if (formbb != null && formbb.Visible)
            {
                formbb.Location = new Point(this.Location.X, this.Location.Y + this.Height);   //坐标定位
            }
        }
        Form formbb = null;
        private void button15_Click_1(object sender, EventArgs e)
        {
            if (formbb == null || formbb.Visible == false)
            {
                formbb = new 历史数据浏览();
                formbb.Show();
                formbb.Location = new Point(this.Location.X, this.Location.Y + this.Height);      //坐标定位
            }
            else { formbb.Close(); formbb = null; }
        }


        //点击button16，将名称为【持仓列表】的子窗体弹出来，挂在主界面的下边 ，再次点击button16时要关闭[持仓列表]窗口
        private void 持仓账户_LocationChanged(object sender, EventArgs e)
        {
            if (formb != null && formb.Visible)
            {
                formb.Location = new Point(this.Location.X, this.Location.Y + this.Height);   //坐标定位
            }
        }

        Form formb = null;
        private void button16_Click_1(object sender, EventArgs e)
        {
            if (formb == null || formb.Visible == false)
            {
                formb = new 持仓账户();
                formb.Show();
                formb.Location = new Point(this.Location.X, this.Location.Y + this.Height);      //坐标定位
            }
            else { formb.Close(); formb = null; }
        }

        //点击button17，将名称为[指标编辑] 的子窗体弹出来，挂在主界面的右边  ， 再次点击button17时关闭[指标编辑] 窗口
        private void 指标编辑_LocationChanged(object sender, EventArgs e)
        {

        }

        Form formr = null;
        private void button17_Click_1(object sender, EventArgs e)  //挂在右边
        {
            if (formr == null || formr.Visible == false)
            {
                formr = new 指标编辑();
                formr.Show();
                formr.Location = new Point(this.Location.X + this.Width, this.Location.Y);
            }
            else { formr.Close(); formr = null; }

        }

        //点击button18，将名称为【持仓列表】的子窗体弹出来，挂在主界面的下边 ，再次点击button16时要关闭[持仓列表]窗口
        private void 预警列表_LocationChanged(object sender, EventArgs e)
        {
        if (formba != null && formba.Visible)
        {
        formba.Location = new Point(this.Location.X, this.Location.Y + this.Height);   //坐标定位
        }
        }

        Form formba = null;
        private void button18_Click_1(object sender, EventArgs e)
        {
        if (formba == null || formba.Visible == false)
        {
        formba = new 预警列表();
        formba.Show();
        formba.Location = new Point(this.Location.X, this.Location.Y + this.Height);      //坐标定位
        }
        else { formba.Close(); formba = null; }
        }
        // #region 下面代码要实现的功能：主窗体上输入股票代码后，在对应文本框中显示股票名称，股票代码和股票价格 ，使所有有股票代码，股票名称和股票价格的地方同步显示， //#endregion
        //在输入股票名称的文本框中输入股票名称时，在股票代码文本框中显示对应的股票代码，同时自动显示5价，
        //在输入股票代码的文本框中输入股票代码时，在股票名称文本框中显示对应的股票名称，同时自动显示5价，


        //要求股票代码，股票名称全局同步
        // 输入完股票代码立即在股票名称文本框内显示对应的股票名称
        private void 股票代码_Leave(object sender, EventArgs e)                 //txtStockName代表什么，用股票代码代替txtStockName可以吗
        {
            SetFormValues();
        }
        private void 股票代码_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == '\r')                                              //按下回车键触发事件关联
            {
                SetFormValues();
            }
        }

        //要求股票代码，股票名称全局同步
        //下面写输入完股票名称后立即在股票代码文本框中显示对应的股票代码
        private void 股票名称_Leave(object sender, EventArgs e)                 //txtStockName代表什么，用股票名称代替txtStockName可以吗
        {
            SetFormValues();
        }
        private void 股票名称_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == '\r')                                              //按下回车键触发事件关联
            {
                SetFormValues();
            }
        }

        private void SetFormValues()
        {
            if (!string.IsNullOrEmpty(this.股票代码.Text) && this.股票代码.Text.Length == 6)
            {
                StockLevel2Info PriceInfo = GlobalInstanceCache.Instance.DataInstance.GetStockPrice(this.股票代码.Text); // 根据组件拿价格数据 
                string strTmp = StockCache.Instance.GetStockName(this.股票代码.Text);  //在代码文本框中输入代码，并且显示该代码
                this.股票名称.Text = strTmp;
                if (PriceInfo != null)
                {
                    //下面读取5价
                    this.昨收价.Text = PriceInfo.PreClosePrice.ToString("##.00");                  //文本框内显示昨收价 
                    this.最高价.Text = PriceInfo.HighPrice.ToString("##.00");                        //文本框内显示最高价
                    this.最低价.Text = PriceInfo.LowPrice.ToString("##.00");                         //文本框内显示最低价
                    this.开盘价.Text = PriceInfo.OpenPrice.ToString("##.00");                       //文本框内显示开盘价
                    this.最新价.Text = PriceInfo.Price.ToString("##.00");                                 //文本框内显示最新价
                }
                if (页面全局缓存.Instance.股票手工页面 != null)                                              //页面全局缓存
                   页面全局缓存.Instance.股票手工页面.SetStockCode(this.股票代码.Text);     //页面全局缓存

        }
        }

        private void panMain_Paint(object sender, PaintEventArgs e)
        {

        }

        private void 主界面_FormClosed(object sender, FormClosedEventArgs e)
        {
            System.Environment.Exit(0);
        }
    }
}



